package com.lazily.homework;


/**
 * @Author:  GZQ
 * @date:  2025/2/21 12:53
 * @description: 练习4 -- 匿名内部类
 */

public class Homework04 {


	// 程序入口
	public static void main(String[] args) {
		/*
			1. 计算器接口具有work方法, 功能是运算, 有一个手机类Cellphone,
			定义方法testWork测试计算功能, 调用计算接口的work方法
			2. 要求调用Cellphone对象的 testwork方法, 使用上 匿名内部类
		*/
		Cellphone cellphone = new Cellphone();
		/*
		new ICalculate() {
			@Override
			public double work(double n1, double n2) {
				return n1 + n2;
			}
		}, 同时也是一个对象
		它的编译类型 ICalculate, 他的运行类型就是 匿名内部类
		 */
		// 匿名内部类调用
		cellphone.testWork(new ICalculate() {
			@Override
			public double work(double n1, double n2) {
				return n1 + n2;
			}
		}, 10, 8);

		cellphone.testWork(new ICalculate() {
			@Override
			public double work(double n1, double n2) {
				return n1 * n2;
			}
		}, 10, 8);
	}
}

// 接口
interface ICalculate {
	/**
	 * work方法，是完成计算, 但是题没有具体要求, 所以自己设计
	 * 完成什么计算，交给匿名内部类
	 */
	public double work(double n1, double n2);
}

class Cellphone {
	// 当我们调用testWork方法时, 直接传入一个实现了ICalculate接口的匿名内部类即可
	// 该匿名内部类,可以灵活的实现work,完成不同的计算任务
	public void testWork(ICalculate iCalculate, double n1, double n2) {
		double result = iCalculate.work(n1, n2); // 动态绑定
		System.out.println("计算后的结果是=" + result);
	}
}